<?php

/**
 * This is the model class for table "menu".
 *
 * The followings are the available columns in table 'menu':
 * @property integer $id
 * @property string $name
 * @property string $id_pages
 * @property integer $sort
 * @property integer $id_parent
 */
class Menu extends CActiveRecord {

    /**
     * Returns the static model of the specified AR class.
     * @param string $className active record class name.
     * @return Menu the static model class
     */
    public static function model($className = __CLASS__) {
	return parent::model($className);
    }

    /**
     * @return string the associated database table name
     */
    public function tableName() {
	return 'menu';
    }

    /**
     * @return array validation rules for model attributes.
     */
    public function rules() {
	// NOTE: you should only define rules for those attributes that
	// will receive user inputs.
	return array(
	    array('name, id_pages, sort, id_parent', 'required'),
	    array('sort, id_parent', 'numerical', 'integerOnly' => true),
	    array('name', 'length', 'max' => 250),
	    // The following rule is used by search().
	    // Please remove those attributes that should not be searched.
	    array('id, name, id_pages, sort, id_parent', 'safe', 'on' => 'search'),
	);
    }

    /**
     * @return array relational rules.
     */
    public function relations() {
	// NOTE: you may need to adjust the relation name and the related
	// class name for the relations automatically generated below.
	return array(
	);
    }

    /**
     * @return array customized attribute labels (name=>label)
     */
    public function attributeLabels() {
	return array(
	    'id' => 'ID',
	    'name' => 'Назва',
	    'id_pages' => 'Меню привязано до сторінки',
	    'sort' => 'відображати під №',
	    'id_parent' => 'Рівень вложеності',
	);
    }

    /**
     * Retrieves a list of models based on the current search/filter conditions.
     * @return CActiveDataProvider the data provider that can return the models based on the search/filter conditions.
     */
    public function search() {
		// Warning: Please modify the following code to remove attributes that
		// should not be searched.

		$criteria = new CDbCriteria;

		$criteria->compare('id', $this->id);
		$criteria->compare('name', $this->name, true);
		$criteria->compare('id_pages', $this->id_pages);
		$criteria->compare('sort', $this->sort);
		$criteria->compare('id_parent', $this->id_parent);

		return new CActiveDataProvider($this, array(
			'criteria' => $criteria,
		));
    }

    /**
     * *Повертаємо меню верхнього рівня
     * @param <type> $zero_text  - якщо тру - то дабавляємо ще нульове значення
     */
    public static function get_array_top_level_menu($zero_text = FALSE) {
		$criteria = new CDbCriteria();
		$criteria->condition = 'id_parent=0';

		$result = Menu::model()->findAll($criteria);

		$result = CHtml::listData($result, 'id', 'name');

		if (empty($result)){
			return array(0 => 'Верхній рівень');
		}

		if ($zero_text) {
			$arr = array(0 => 'Верхній рівень');
			$result = $arr + $result;
		}

		return $result;
	}

	public static function get_text_top_level($id = 0) {
		if (empty($id)){
			return 'Верхній рівень';
		}

		$result = Menu::model()->findByPk($id);

		if (empty($result)){
			return 'Верхній рівень';
		}else{
			return $result->name;
		}
    }

    /**
     * *Повертаємо масив сторінок
     * @param <type> $zero_text  - якщо тру - то дабавляємо ще нульове значення
     */
    public static function get_array_page() {
		$criteria = new CDbCriteria();
		$criteria->condition = 'status = ' . Pages::STATUS_PUBLIC;

		$result = Pages::model()->findAll($criteria);

		$result = CHtml::listData($result, 'id', 'name');

		if (empty($result)){
			return FALSE;
		}

		return $result;
    }

    public static function get_text_page($id = 0) {
		if (empty($id)){
			return FALSE;
		}

		$result = Pages::model()->findByPk($id);

		if (empty($result)){
			return FALSE;
		}else{
			return $result->name;
		}
    }

//	public static function get_menu_top($id=0, $text='') {
//
//		function get_tree_menu($id=0, $text='') {
//			$connection = Yii::app()->db;
//			$command = $connection->createCommand("select * from menu where id_parent=$id order by sort");
//			$list_menu = $command->queryAll();
//			$count = count($list_menu);
//
////	$list_menu = $CI->db->query("select * from menu where id_parent=$id order by sort");
////    $count = $list_menu->num_rows();
////    $list_menu = $list_menu->result();
//
//
//			if ($id == 0) {
//				if ($count > 0) {
//					foreach ($list_menu as $list_menu_one) {
//						echo'<li>';
//						echo '<a href="' . Yii::app()->request->baseUrl . 'pages/' . $list_menu_one['id_pages'] . '">' . $list_menu_one['name'] . '</a>';
//						echo get_tree_menu($list_menu_one['id'], $text);
//						echo '</li>';
//					}
//				} else {
//					return $text;
//				}
//			} else {
//				if ($count > 0) {
//					echo '<ul>';
//					foreach ($list_menu as $list_menu_one) {
//						echo '<li>';
//						echo '<a href="' . Yii::app()->request->baseUrl . 'pages/' . $list_menu_one['id_pages'] . '">' . $list_menu_one['name'] . '</a>';
//						echo get_tree_menu($list_menu_one['id'], $text);
//						echo '</li>';
//					}
//					echo '</ul>';
//				} else {
//
//					return $text;
//				}
//			}
//		}
//    get_tree_menu($id=0, $text='');
//}

    /**
     * Будую дерево меню з використанням статичних методів
     * вище є закоментований блок де в середині метода створюєть функція і вона дьоргається
     * @param <type> $id
     * @param <type> $text
     * @return <type>
     */
    public static function get_menu_top_oop($id = 0, $text = '') {
		$connection = Yii::app()->db;

		$command = $connection->createCommand("select * from menu where id_parent=$id order by sort");
		$list_menu = $command->queryAll();

		$count = count($list_menu);

	//	$list_menu = $CI->db->query("select * from menu where id_parent=$id order by sort");
	//    $count = $list_menu->num_rows();
	//    $list_menu = $list_menu->result();


		if ($id == 0) {
			if ($count > 0) {
				foreach ($list_menu as $list_menu_one) {
					echo'<li>';
					echo '<a href="' . Yii::app()->controller->createUrl('pages/index', array('id' => $list_menu_one['id_pages'])) . '">' . $list_menu_one['name'] . '</a>';
					echo self::get_menu_top_oop($list_menu_one['id'], $text);
					echo '</li>';
				}
			} else {
				return $text;
			}
		} else {
			if ($count > 0) {
				echo '<ul>';
				foreach ($list_menu as $list_menu_one) {
					echo '<li>';
					echo '<a href="' . Yii::app()->controller->createUrl('pages/index', array('id' => $list_menu_one['id_pages'])) . '">' . $list_menu_one['name'] . '</a>';
					echo self::get_menu_top_oop($list_menu_one['id'], $text);
					echo '</li>';
				}
				echo '</ul>';
			} else {
				return $text;
			}
		}
    }

    public static function get_menu_top_oop_return_html($id = 0, $text = '') {
		$connection = Yii::app()->db;

		$command = $connection->createCommand("select * from menu where id_parent=$id order by sort");
		$list_menu = $command->queryAll();
		if (!empty($list_menu)) {
			$text .= '<ul>';
			foreach ($list_menu as $list_menu_one) {
				$text .= '<li>';
				$text .= '<a href="' . Yii::app()->controller->createUrl('pages/index', array('id' => $list_menu_one['id_pages'])) . '">' . $list_menu_one['name'] . '</a>';
				$text .= self::get_menu_top_oop_return_html($list_menu_one['id'], '');
				$text .= '</li>';
			}

			$text .='</ul>';

			return $text;
		}
    }

}
